
const downloadGitRepo = require('download-git-repo');
const { loading, loadingSucceed, loadingFailed } = require('../utils/message-box');

/**
 * 
 * repository：string 类型，表示要下载的 Git 仓库地址，支持 GitHub、GitLab 和 Bitbucket 等平台。
 * destination：string 类型，表示要将下载的文件保存到本地的目录路径。
 * options：object 类型，表示可选的配置项，比如是否静默下载、tag 版本等等。详情可参考 download-git-repo 的文档。
 * callback：function 类型，表示下载完成后的回调函数，接受 2 个参数，分别是 err 和 result，其中 err 表示下载过程中的错误信息，result 表示下载成功后的结果信息。
 */
module.exports = async (repository, destination, options) => {
    loading('正在从远程仓库拉取代码...');
    return new Promise((resolve, reject) => {
        downloadGitRepo(repository, destination, options, (error, result) => {
            if (error) {
                loadingFailed(error);
                resolve(error);
                return;
            }
            loadingSucceed('拉取成功！');
            resolve(result);
        });
    });
};
